Ground-Zerro / Phobos Public
Code Issues Pull requests Actions Releases View on GitHub ↗
715 B typescript
import { ClientGetSchema } from '#db/repositories/client/types';

export default definePermissionEventHandler(
  'clients',
  'view',
  async ({ event, checkPermissions }) => {
    const { clientId } = await getValidatedRouterParams(
      event,
      validateZod(ClientGetSchema, event)
    );

    const result = await Database.clients.get(clientId);
    checkPermissions(result);

    if (!result) {
      throw createError({
        statusCode: 404,
        statusMessage: 'Client not found',
      });
    }

    // data can be undefined if the client is disabled
    const data = await WireGuard.dumpByPublicKey(result.publicKey);

    return {
      ...result,
      endpoint: data?.endpoint,
    };
  }
);